package xyz.mumuwei.youthcourseserver.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

/**
 * @author mumuwei
 * @date 2022/3/18
 */
public class TimeUtil {

    /**
     * 过去当前时间戳
     * @return 时间戳字符串
     */
    public static String getCurrentTimestamp() {
        return String.valueOf(System.currentTimeMillis()).substring(0, 10);
    }

    /**
     * 获取指定日期23点59分59秒的毫秒数
     * @param date 指定日期
     * @return 时间戳
     */
    public static String getEndOfDay(Date date) {
        long current=date.getTime();
        long zero = current/(1000*3600*24)*(1000*3600*24)- TimeZone.getDefault().getRawOffset();
        return String.valueOf(zero+24*60*60*1000-1).substring(0, 10);
    }

    /**
     * 获取指定日期零点零分零秒的毫秒数
     * @param date 指定日期
     * @return 时间戳
     */
    public static String getStartOfDay(Date date) {
        long current=date.getTime();
        return String.valueOf(current/(1000*3600*24)*(1000*3600*24)- TimeZone.getDefault().getRawOffset()).substring(0, 10);
    }

    /**
     * 格式化时间
     * @param secondJson 时间戳
     * @param format 格式
     * @return 格式化后的日期
     */
    public static String dateFormat(String secondJson, String format) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        return simpleDateFormat.format(new Date(Integer.parseInt(secondJson) * 1000L));
    }

    /**
     * 获取延时后的 定时任务表达式
     * @param delay 延时秒数
     * @return cron表达式
     */
    public static String getCronExpress(long delay) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ss mm kk dd MM ? yyyy");
        return simpleDateFormat.format(new Date(System.currentTimeMillis() + delay * 1000L));
    }

    /**
     * 获取指定时间戳的 定时任务表达式
     * @param timeStr 指定日期时间戳
     * @return cron表达式
     */
    public static String getCronExpress(String timeStr) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ss mm kk dd MM ? yyyy");
        return simpleDateFormat.format(new Date(Integer.parseInt(timeStr) * 1000L));
    }
}
